package com.iuie.ns.frame.service.impl;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.iuie.ns.frame.persistence.dao.IGenericDao;
import com.iuie.ns.frame.persistence.dao.IGenericDao.MatchType;
import com.iuie.ns.frame.service.IBaseService;
import com.iuie.ns.frame.web.dataset.vo.Page;

/**
 * 提供基础服务
 * @author lj
 * @createTime 2017年1月19日 上午10:39:51
 * @param <T>
 */
public abstract class BaseServiceImpl<T> implements IBaseService<T>{
	
	@Override
	public List<T> findAll() {
		return getGenericDao().findAll();
	}
	
	@Override
	public List<T> findAll(T obj) {
		return getGenericDao().findAll(obj);
	}
	
	@Override
	public List<T> findAll(T t, Map<String, MatchType> map) {
		return getGenericDao().findAll(t, map);
	}

	@Override
	public List<T> findByPage(T t, Page page) {
		return getGenericDao().findByPage(t, page);
	}
	
	@Override
	public List<T> findByPage(T t, Page page, Map<String, MatchType> map) {
		return getGenericDao().findByPage(t, page, map);
	}
	
	@Override
	public T findById(Serializable id) {
		return getGenericDao().findById(id);
	}

	@Override
	public T addOne(T one) {
		getGenericDao().save(one);
		return one;
	}

	@Override
	public void deleteById(Serializable id) {
		getGenericDao().deleteById(id);
	}

	@Override
	public void deleteOne(T one) {
		getGenericDao().delete(one);
	}

	@Override
	public void updateOne(T one) {
		getGenericDao().update(one);
	}
	
	@Override
	public T loadById(Serializable id) {
		return getGenericDao().load(id);
	}
	@Override
	public void saveOrUpdate(T one) {
		getGenericDao().saveOrUpdate(one);
	}
	
	
	
	protected abstract IGenericDao<T, Serializable> getGenericDao();

}
